Phase Reconciliation for Contended In-Memory Transactions
نویسندگان
چکیده
Multicore main-memory database performance can collapse when many transactions contend on the same data. Contending transactions are executed serially—either by locks or by optimistic concurrency control aborts—in order to ensure that they have serializable effects. This leaves many cores idle and performance poor. We introduce a new concurrency control technique, phase reconciliation, that solves this problem for many important workloads. Doppel, our phase reconciliation database, repeatedly cycles through joined, split, and reconciliation phases. Joined phases use traditional concurrency control and allow any transaction to execute. When workload contention causes unnecessary serial execution, Doppel switches to a split phase. There, updates to contended items modify per-core state, and thus proceed in parallel on different cores. Not all transactions can execute in a split phase; for example, all modifications to a contended item must commute. A reconciliation phase merges these per-core states into the global store, producing a complete database ready for joinedphase transactions. A key aspect of this design is determining which items to split, and which operations to allow on split items. Phase reconciliation helps most when there are many updates to a few popular database records. Its throughput is up to 38× higher than conventional concurrency control protocols on microbenchmarks, and up to 3× on a larger application, at the cost of increased latency for some transactions.
منابع مشابه
Parallel execution for conflicting transactions
Multicore main-memory databases only obtain parallel performance when transactions do not conflict. Conflicting transactions are executed one at a time in order to ensure that they have serializable effects. Sequential execution on contended data leaves cores idle and reduces throughput. In other parallel programming contexts—not serializable transactions— techniques have been developed that ca...
متن کاملTransactional Orc
Transactions provide a language construct that programmers can use to specify that operations execute atomically, in isolation from all computation outside the transaction. Transactions permit optimistic concurrency for accesses to shared data, which may improve performance over locking mechanisms. Transactions also allow programmers to specify atomic regions in a composable way, which locks do...
متن کاملA Case for Using Value Prediction to Improve Performance of Transactional Memory
Transactional Memory(TM) is an optimistic speculative synchronization scheme that provides atomic execution for a region of code marked as a transaction by the programmer. TM avoids many of the problems associated with mutual-exclusion-based synchronization and can make writing parallel programs relatively easier. Programs with critical sections that are not heavily contended benefit from the o...
متن کاملExperimental Study on the Magnetomechanical Characteristics of Ni-Mn-Ga Ferromagnetic Shape Memory Alloy Single Crystals
Magnetic shape memory properties of Ni-Mn-Ga single crystals were characterized by measurement of stress-induced martensite reorientation under constant magnetic fields. Also magnetic field-induced strain as a function of the applied magnetic field under different constant compressive stress levels has been investigated. All the experiments were performed at room temperature in which the sample...
متن کاملAutomating semantics-based reconciliation for mobile databases
Optimistic replication lets multiple users update local replicas of shared data independently. These replicas may diverge and must be reconciled. In this paper, we present a general-purpose reconciliation system for mobile transactions. The basic reconciliation engine treats reconciliation as an optimization problem. To direct the search, it relies on semantic information and user intents expre...
متن کامل